package com.whfc.emp.dao;

import com.whfc.emp.dto.AppEmpAnaWeekDataDTO;
import com.whfc.emp.dto.AppEmpDTO;
import com.whfc.emp.dto.EntryExitSyncDTO;
import com.whfc.emp.entity.AppEmpEnterRecord;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface AppEmpEnterRecordMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(AppEmpEnterRecord record);

    int insertSelective(AppEmpEnterRecord record);

    AppEmpEnterRecord selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(AppEmpEnterRecord record);

    int updateByPrimaryKey(AppEmpEnterRecord record);

    /**
     * 查询一段时间内的进出场记录
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppEmpEnterRecord> selectByDeptIdsAndDate(@Param("deptId") Integer deptId,
                                                   @Param("startTime") Date startTime,
                                                   @Param("endTime") Date endTime);

    /**
     * 统计项目一段时间内每天的进退场人数
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppEmpAnaWeekDataDTO> selectDayStatStat(@Param("deptId") Integer deptId,
                                                 @Param("startTime") Date startTime,
                                                 @Param("endTime") Date endTime);

    /**
     * 统计项目一段时间内总的进退场人数
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    AppEmpAnaWeekDataDTO selectTotalStat(@Param("deptId") Integer deptId,
                                         @Param("startTime") Date startTime,
                                         @Param("endTime") Date endTime);


    /**
     * 查看最近进场时间
     *
     * @param empId
     * @return
     */
    Date selectRecentEnterTime(@Param("empId") Integer empId);

    /**
     * 查找同步进出场时人员信息
     *
     * @param id
     * @return
     */
    EntryExitSyncDTO selectById(@Param("id") Integer id);

    /**
     * 人员日志
     *
     * @param deptId
     * @param date
     * @return
     */
    List<AppEmpDTO> selectEmpLog(@Param("deptId") Integer deptId, @Param("date") Date date);
}